package com.dragon.refect.clazz;

import java.util.Arrays;

/**
 * 确定指定的Object是否与此类表示的对象赋值兼容。此方法与Java语言instanceof运算符动态等效。如果指定的Object参数为非null，则该方法返回true
 * ，并且可以将其强制转换为此类对象表示的引用类型，而不会引发ClassCastException。否则返回false。
 * 具体来说，如果此Class对象表示一个声明的类，则如果指定的Object参数是所表示的类（或其任何子类）的实例，则此方法返回true；否则返回false。
 * 如果此Class对象表示一个数组类，并且可以通过标识转换或扩展引用转换将指定的Object参数转换为该数组类的对象，则此方法返回true；
 * 否则，此方法返回true。否则返回false。如果此Class对象表示一个接口，则如果指定Object
 * 参数的类或任何超类实现此接口，则此方法返回true；否则，此方法返回true。否则返回false。如果此Class对象表示原始类型，则此方法返回false。
 *
 * @author dragon
 * @since 2019/12/1
 */
public class ClassIsInstanceTest {

    public static void main(String[] args) {
        Number[] numbers = new Integer[12];
        numbers[0] = 10;
        numbers[1] = 12;
        System.out.println(Arrays.toString(numbers));
        boolean instance = numbers.getClass().isInstance(new Integer[1]);
        System.out.println(instance);

        Zi z = new Zi() {

        };
        System.out.println(z.getClass().getSimpleName());
        System.out.println(z.getClass().isAnonymousClass());
    }
}
